#!/bin/bash

# 设置脚本在发生错误时立即退出
set -e

# 1. 检测本地 Maven 环境
echo "步骤1: Maven 环境检测及后端打包"
cd back || { echo "进入 back 目录失败，请检查路径"; exit 1; }

# 检测本地是否安装 Maven
if command -v mvn &> /dev/null; then
  echo "本地检测到 Maven 环境，开始执行打包"
  mvn clean package || { echo "Maven 打包失败，请检查 pom.xml 或依赖"; exit 1; }
else
  echo "未检测到 Maven 环境，跳过自动打包"
  # 检查 target 目录是否已有 JAR 文件
  if [ ! -f target/elderly_service_platform.jar ]; then
    echo "ERROR: 未找到 back/target/elderly_service_platform.jar，且未检测到 Maven 环境，请手动打包后放置 JAR 文件"
    exit   else
    echo "已找到 back/target/elderly_service_platform.jar，跳过 Maven 打包步骤"
  fi
fi

cd ..

# 2. 删除旧的后端镜像
echo "步骤2: 清理旧的后端镜像"
BACKEND_IMAGE="elderly-backend:latest"
if docker images | grep -q "elderly-backend"; then
  docker rmi "$BACKEND_IMAGE" || echo "镜像 $BACKEND_IMAGE 不存在，跳过删除"
fi

# 3. 停止系统自带的 Redis 和 MySQL 服务（避免端口冲突）
echo "步骤3: 停止系统自带的Minio, Redis 和 MySQL 服务"
sudo systemctl stop minio || echo "Minio 服务未运行，跳过"
sudo systemctl stop redis || echo "Redis 服务未运行，跳过"
sudo systemctl stop mysqld || echo "MySQL 服务未运行，跳过"

# 4. 清理 Docker 容器和数据卷
echo "步骤4: 清理 Docker 容器和网络"
docker-compose down || echo "docker-compose down 执行失败，可能未初始化"

# 5. 构建新的后端镜像
echo "步骤5: 构建后端镜像"
docker build -t "$BACKEND_IMAGE" -f back/Dockerfile . || { echo "镜像构建失败，请检查 Dockerfile"; exit 1; }

# 6. 启动服务
echo "步骤6: 启动服务"
docker-compose up -d || { echo "docker-compose 启动失败，请检查 docker-compose.yml"; exit 1; }

# 7. 验证服务状态
echo "部署完成，验证服务状态:"
docker-compose ps